package com.xxgc.demo.utils;

import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
import lombok.SneakyThrows;
import org.springframework.stereotype.Component;

/**
 * @Author: Sjy
 * @Date :2023/10/10 - 10 - 10 - 15:07
 * 图片工具类
 * 多线程图片压缩
 * 多线程图片水印
 * 多线程图片缩略图
 */
@Component
public class ImageUtil {

    /**
     * 缩略图
     * @param path
     */
    public void thumbnail(String path,String thumbnailPath){
        // 开线程压缩缩略图
        new Thread(new Runnable() {
            @SneakyThrows
            @Override
            public void run() {
                ImageCompressUtil.imageCompress(path,thumbnailPath,200);
            }
        }).run();
    }

    /**
     * 加水印
     * @param path 图片地址
     * @param width 图片宽
     * @param height 图片高
     */
    public void watermark(String path,int width,int height){
        new Thread(new Runnable() {
            @SneakyThrows
            @Override
            public void run() {
                //user.dir获取项目路径
                String watermarkPath = System.getProperty("user.dir")+"\\src\\main\\resources\\images\\watermark.png";
                ImgUtil.pressImage(
                        FileUtil.file(path),//原图
                        FileUtil.file(path),//水印之后的图
                        ImgUtil.read(FileUtil.file(watermarkPath)), //水印图片
                        width, //x坐标修正值。 默认在中间，偏移量相对于中间偏移
                        height, //y坐标修正值。 默认在中间，偏移量相对于中间偏移
                        1f//透明度
                );
            }
        }).run();
    }

    /**
     * 开线程压缩图片
     * @param path 图片地址
     * @param size 压缩大小
     */
    public void threadCompressPictures(String path,float size){
        new Thread(new Runnable() {
            @SneakyThrows
            @Override
            public void run() {
                ImageCompressUtil.imageCompress(path,path,size);
            }
        }).run();
    }


}
